今天,我們先輕鬆的聊一聊專案 (Color Code Tag) 誕生的始末,再一同看看 DevOps 的定義,為後續開發鋪上地基。
2022 年 6 月,我人生第一次踏上澎湖這座美麗的島嶼,在搭往七美島的遊艇上,澎湖的海與天連成一線,我不禁感嘆這 美麗的顏色漸層,就順手拍下了這張海連天的照片,並想把這組顏色永遠收藏。
(取自 孤單威廉的 iphone SE)
這時忽然想到,前陣子在做網站規劃時,為了制定網站的主題色調,常常到 Pinterest 等網站上參考設計師們繪製的 Color Settings;經參考與篩選多個顏色後,再逐一微調成自己想要的色碼組合。
(取自 Pinterest)
這時一個 idea 油然而生,我是否能 搭建一個 Web 服務,前端讓使用者傳送照片,由後端程式即時產生一組符合照片漸層的色碼,同時也能夠練習前後端的開發與部署。
至此,ColorCodeTag 的種子便落下,開始準備生根發芽......。
什麼是 DevOps ?
這或許是 IT 界的的大哉問,這裡總結目前大家對 DevOps 的主流定義:
綜上所述,我們又可以整理出:
DevOps 是參與人員、流程與技術,在特定需求下的結合;目的是實踐快速且持續不斷的對最終用戶交付價值
在實踐 DevOps 的過程中,自然就包含了專案的規劃、程式碼的撰寫、Gitflow 整併、單元測試與原碼掃描、依照運行環境打包與建構(如 .jar、Docker image)、部署到生產環境與監控狀況與回饋等。
同時,又為了實踐 "持續不斷" 這項目的,在完成了第一階段的產品交付後 (可能是某版本的部署),又會重啟新的開發循環。
這時,團隊對於程式撰寫到上線的流程 (或稱 Pipeline) 已經有了雛形,但馬上會面臨到 "速度與品質" 的需求。
當程式由 PG 新增與修正並推送後,QA 便需要 Checkout source code 測試驗證,完成後再換運維人員 Checkout 後打包並推送到倉庫 (Repository,如 DockerHub, Harbor, 甚至是某個資料夾) 中,再將構建後的程式碼部署到運行環境上。在這個情況下,團隊不僅會花費大量的時間執行相同的事情,同時也會增加彼此之間溝通的成本。
為了解決測試驗證與交付速度的問題,CI/CD 的概念便誕生:
(取自 Red Hat 官網)
由此可見,DevOps 並不是一個人的事情,更準確地來說,是多個參與專案的成員、多份專業技術的整合。
真的一個人也能 DevOps 嗎?
剛才有提到,DevOps 並不是一個人的事情,它是多份專業技術的整合,目的是快速且持續不斷交付價值。而我個人的看法,多數的團隊受限於分工與各項專業知識的隔閡,成員不一定能 (或有時間) 理解與學習不同崗位的知識,反倒是常花費時間進行效率低落的溝通,因此實踐 DevOps 除了要有完整的開發團隊與流程外,還需要有人能夠:
以上的條件,亦是目前主流 DevOps 工程師需要負責的工作項目;當 DevOps 趨於穩定後,團隊成員便能潛移默化的培養 DevOps 的精神,並正向影響其他的專案。
- DevOps 是參與人員、流程與技術,在特定需求下的結合;目的是實踐快速且持續不斷的對最終的用戶交付價值
- DevOps 從不是一個人的事情,但需要有人整合團隊技術、帶動部門的協調與溝通,並實做 CI/CD,終而形成特定的文化
- CI/CD 是 DevOps 中重要的一環,核心是藉由自動化提升交付價值的速度
明天,我們將介紹 IT 界的第二項大哉問: 什麼是敏捷開發,並且開始準備規劃專案的架構、執行方法、時程以及預期的產出。
IBM
Microsoft Azure
AWS
Red Hat
Wiki